import { createStore } from "vuex";
import { getUserInfo } from "../api/manager";
import { getUser, removeToken, removeUser } from "../composables/auth";
import router from "../router";

// Create a new store instance.
// 一个在程序运行时进存储一些临时状态的模块
const store = createStore({
  state() {
    return {
      user: {}, // 用户信息
      // 侧边栏状态
      asideWidth: "200px"
    };
  },
  mutations: {
    // 记录用户信息
    SET_USER(state, user) {
      state.user = user;
    },
    // 切换侧边栏状态（展开/收缩）
    COL_EXPAND_SIDE(state) {
      state.asideWidth = state.asideWidth == "200px" ? "64px" : "200px";
    }
  },
  actions: {
    // 获取当前用户登陆信息
    getInfo({ commit }) {
      return new Promise((resolve, reject) => {
        getUserInfo(getUser())
          .then((res) => {
            commit("SET_USER", res.data);
            // 跳转到后台管理页面
            resolve(res.data);
            console.log(res.data);
          })
          .catch((err) => {
            // 如果出现获取用户信息异常
            // 退出登陆
            removeToken()
            // 退出到login页面
            router.push("/")
            reject(err)
          });
      });
    },

    // 退出登陆
    userLogout({ commit }) {
      // 清除token
      removeToken();
      removeUser();
      // 清除当前用户状态
      commit("SET_USER", {});
    },
  },
});

export default store;
